#include <stdio.h>
/*
数据类型
    整形
        int 
        char 
    浮点型
        double
*/

// 如何获取 变量的占用字节长度
// sizeof 是C语言中的关键字 不是函数  单位为字节

int main(int argc, char const *argv[])
{
    
    // 整数部分  小数部分
    int val_int_1 = 10.9;
    char val_char_1 = 'A';
    short val_int_2 = 20;
    long val_int_3 = 30;
    long long val_int_4 = 30;
    

    printf("val_int_1 = %d\n" , val_int_1);
    printf("int 长度为: %ld\n" , sizeof(val_int_1));

    printf("val_char_1 = %d\n" , val_char_1);
    printf("char 长度为: %ld\n" , sizeof(val_char_1));
    
    printf("val_int_2 = %d\n" , val_int_2);
    printf("short 长度为: %ld\n" , sizeof(val_int_2));
    
    printf("val_int_3 = %ld\n" , val_int_3);
    printf("long 长度为: %ld\n" , sizeof(val_int_3));
    
    printf("val_int_4 = %lld\n" , val_int_4);
    printf("long long 长度为: %ld\n" , sizeof(val_int_4));


    // 浮点型
    // double       双精度浮点型
    // long double  长 双进度浮点型
    // float        单精度浮点型

    double val_dou_1 = 3.141592615015077887788;
    long double val_dou_2 = 3.141592615015077887788;
    float val_flo_1 = 3.1415926150150;

    printf("%.20f\n" , val_dou_1);
    printf("%.20Lf\n" , val_dou_2);
    printf("%.7f\n" , val_flo_1);

    printf("double = %ld\n" , sizeof(double));
    printf("long double = %ld\n" , sizeof(long double));
    printf("float = %ld\n" , sizeof(float));
    

    // 精度丢失
    // 当后面我们写代码的时候 出现了打印精度不足时 ，不一定是变量分配的精度不够
    // 如果你在单片上编程  用单精度
    // 如果你在pc机上变成  用双精度

    return 0;
}


// 如果后续工作中 出现了 不正常的溢出 最好是对当前的设备 打印一下 每种变量的长度
// 64 32
